One embodiment relates generally to manufacturing systems and, more particularly, to an automated system and method for generating data to drive a manufacturing process.
Most, if not all, manufacturers of computer systems produce more than one product line. In addition, many computer system manufactures offer xe2x80x9cmade-to-orderxe2x80x9d computers that include a combination of components, systems, and software selected by the purchaser. In any event, for each individual computer system, or machine, assembled by a manufacturer, there needs to be some representation throughout the factory of the particular configuration of the machine so that it can be assembled properly with the right components installed therein.
For example, in one manufacturing system, a unique barcode is assigned to each machine to be built. A bar file associated with the machine and identified by the bar code number is stored by an application and contains what is essentially a xe2x80x9cparts listxe2x80x9d specifying what is to be included in the machine. When a machine is selected, or xe2x80x9cpulled,xe2x80x9d for assembly, a xe2x80x9ctravelerxe2x80x9d comprising a human-readable printout of the pars list specified in the bar file is generated and broadcast to a line controller, which may be, for example, a Unix workstation. The line controller runs a script that calls various executables to generate various output files containing data for use by tools on the factory floor. In particular, once the output files are generated, they are made available to the factory tools on the line.
Examples of output files such as those described above include an SDR file, which is a resource allocation file comprising a text listing of what components are to be included in the machine, SJS and DJS files, which are jumper and option setting files and respectively indicate system jumper settings and device jumper settings for the machine, and a PNP file, which is a parts configuration file and contains a binary stream used to program devices such as a network card.
The foregoing system suffers from several deficiencies. In particular, a separate line controller must be maintained for each manufacturing line. For example, if a manufacturer has four separate lines, it must also maintain four separate line controllers, one for controlling each line. Moreover, the system is not sufficiently fault tolerant or flexible. Still further, the system does not allow for promotion to be easily performed without interrupting the manufacturing process, which is becoming more important as manufacturers move to full time (i.e., 24 hours/day, 7 days/week) production schedules.
Therefore, what is needed is a system for generating data for driving a computer manufacturing process that is flexible, fault tolerant, and easily upgradable.
One embodiment, accordingly, is a system for generating data for driving a manufacturing process involving a symbiotic relationship between two Windows NT(copyright) system services: a single instance of a xe2x80x9cSequencerxe2x80x9d service, which provides the command, control, and communication for all work in progress, and multiple instances of a xe2x80x9cQuantumxe2x80x9d service, which manages the execution of a unit of work on command from the Sequencer.
All configuration information for the system is stored in Windows NT(copyright) System Registry as predefined structures. This information controls the operation and functionality of the Sequencer and the many Quantums. Registry key entries under xe2x80x9cProcessing Stepsxe2x80x9d define the names of the installed Quantum services. The configuration dynamic linked library (xe2x80x9cDLLxe2x80x9d) image to be loaded by and the sequence number for each Quantum are also defined by registry entries.
The Sequencer is the main service and provides the management of starting the installed Quantums services and synchronizing with the created message queues. The Sequencer manages all work in progress and maintains the state of each unit of work. The Sequencer passes work from one Quantum services message queue to the next, based on the Quantum""s registry key entry for sequence number. The sequence numbers are ordered from 0 to n, with n being the last sequence to execute. This sequencing is continued until all defined sequences, that is, all Quantum services, have been successfully executed in turn.
One of the Quantum services, usually sequence 0, provides commands to the Sequencer to create a work object associated with a machine to be assembled. The Sequencer creates this work object with a unique identifier used throughout the system. If a single Quantum sequence process fails, the Sequencer will log the error and discard that work object, preventing any further processing on it.
The communication protocol between the Sequencer and each Quantum allows Sequencer to monitor the status of all Quantum services. If a Quantum service becomes unsynchronized or experiences a protection fault, the Sequencer will detect the fatal error. If the Quantum service is unable to resolve the error on its own, the Sequencer will stop the Quantum service, clean up any resources used by the failed service, and restart the service. No work object is lost during the recovery and processing will continue where it left off This capability will prevent most downtime caused by this processing. This restarting and synchronizing capability allows for the anytime promotion of data and executable files. By utilizing external communications ports, the Sequencer may be commanded to pause processing, thus allowing for services to be stopped and replaced or data files copied without the possibility of contention from other running processes. After the promotion completes, the Sequencer is commanded to resume and processing continues using the promoted files.
The Sequencer also provides facilities for communication with other applications in the manufacturing environment. The Sequencer listens on a known TCP/IP port and interprets messages adhering to a designated communications protocol. This facility is utilized in two steps. First, a request is made by an application via a Sequencer listening Port for notification of certain events. Then, when the Sequencer generates one of the requested events, a notification will be sent to the requesting application via a Sequencer Notify Port. This allows for automated notifications to service personnel of fatal errors before the failure is apparent on the factory floor. The notification facilities may also be used to monitor the health of a system and maintain a log of work processed.
The Quantum service provides an abstraction layer. The dynamic properties of Quantum allow for runtime definition of a user-specified DLL. This abstraction layer provides the versatility and scalability of the system. New functionality is provided by the uniqueness of the library loaded. Requirements for the library are simple. The library must provide two exported functions, Start( . . . ) and Stop( . . . ). The library must begin whatever processing it is designed to do on the Start command. The library must also immediately abort any processing on the Stop command. The library must communicate to the Quantum services, utilizing thread message queues, that the work requested has started processing, and that processing has completed successfully or has failed. This processing of the work initiated by the library must take place in a separate address space from the Quantum service containing the library image. This prevents any catastrophic process failure from adversely affecting the Quantum service or the operation of the Sequencer. The design of a library and its interface with an associated sequence process is limited only by the designer""s imagination. The only constraints are the exported functions and the required notifications needed by Quantum.
A technical advantage achieved is that, by creating a variety of Quantum library DLLs and associated sequence processes, the system is capable of remaining xe2x80x9coutput compatiblexe2x80x9d with existing manufacturing processes and will easily scale into new manufacturing technologies as they are delivered.
Another technical advantage achieved is that the system is highly scalable and allows for quick and easy process customization for each of a number of manufacturing facilities and lines of business.
Yet another technical advantage achieved is that the system provides xe2x80x9canytimexe2x80x9d promotion capabilities to allow upgrading of data and executable files during normal operation without impacting factory production.
Still another technical advantage achieved is that the system is extremely fault tolerant and makes significant technical advances in obtaining the objective of zero downtime.
Still another technical advantage achieved is that a single instance of the system supports the entire manufacturing facility for all lines of business, with a backup system for providing additional fault tolerance.